package com.dhcc.DRGsHosp.application;

import java.util.List;
import java.util.Map;

import com.dhcc.DRGsHosp.core.domain.IndexCal;

/**
 * @title		:ForeCastApplication.java
 * @description	:
 * @author		:lileizheng
 * @date		:2015年6月8日
 * @version     :1.0
 * @copyright   :DHCC 2013-2014 
 */
public interface ForeCastApplication {

	/**
	 * @methodname    :getMDCList
	 * @description   : 获取mdc列表
	 * @param         :
	 * @author        :lileizheng
	 * @param dto 
	 * @return        :
	 * @date          :2015年7月17日
	 */
	List<Object[]> getMDCList(IndexCal IndexCal);

	/**
	 * @methodname    :getAdrgList
	 * @description   : 获取adrg
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2015年7月17日
	 */
	List<Object[]> getAdrgList(IndexCal entity);

	/**
	 * @methodname    :getDrgList
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2015年7月17日
	 */
	List<Object[]> getDrgList(IndexCal entity);

	/**
	 * @methodname    :getHospData
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2015年7月18日
	 */
	Map<String, Object> getHospData(IndexCal m);

	/**
	 * @methodname    :getAddBedDaysByDep
	 * @description   : 获取科室增加床日数
	 * @param         :
	 * @author        :lileizheng
	 * @param year 
	 * @return        :
	 * @date          :2015年7月20日
	 */
	double getAddBedDaysByDep(String ccode, String year);

	/**
	 * @methodname    :getDRGsNanualData
	 * @description   : 获取病种计算标杆
	 * @param         :
	 * @author        :lileizheng
	 * @param string 
	 * @return        :
	 * @date          :2015年7月22日
	 */
	Map<String, Object> getDRGsNanualData(String string);

	/**
	 * @methodname    :getNewDepartment
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年3月19日
	 */
	List<Object[]> getNewDepartment(String year, String depGroupCode);

	/**
	 * @methodname    :getNewDepartmentDRGsData
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年3月20日
	 */
	List<Object[]> getNewDepartmentDRGsData(String depCode, String year);

	/**
	 * @methodname    :getHcRatioByDep
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年3月20日
	 */
	double getHcRatioByDep(String depCode, String year);

	/**
	 * @methodname    :getHcFundRatioByDep
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年3月20日
	 */
	double getHcFundRatioByDep(String depCode, String year);

	/**
	 * @methodname    :getNewPlan
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @param addYear 
	 * @param depCode 
	 * @return        :
	 * @date          :2017年3月20日
	 */
	List<Object[]> getNewPlan(String depCode, String addYear);

	/**
	 * @methodname    :savePlan
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年3月20日
	 */
	void savePlan(Map<String, Object> json);

	/**
	 * @methodname    :delPlan
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年3月20日
	 */
	void delPlan(String depCode, String addYear);

	/**
	 * @methodname    :getNewPlanDRGs
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年3月21日
	 */
	List<Object[]> getNewPlanDRGs(String depCode, String addYear);

	/**
	 * @methodname    :saveNewPlanDRGs
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @param addYear 
	 * @param depCode 
	 * @return        :
	 * @date          :2017年3月21日
	 */
	void saveNewPlanDRGs(List<Map<String, Object>> json, String depCode, String addYear);

	/**
	 * @methodname    :saveToQuotamanage
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @param planYear 
	 * @param saveType 
	 * @param roleName 
	 * @return        :
	 * @date          :2017年8月26日
	 */
	void saveToQuotamanage(String year, String saveType, String planYear, String roleName);

	List<Map<String, Object>> findRelevanceQuotaCode(String string);
/**
 * 
 *  @Discription：获取该科室组下科室
 *  @Author： liuhongjun
 *  @param depGroupCode
 *  @return
 *  @Date:2018年3月14日上午9:40:51
 */
	List<Map<String, Object>> getDepartmentByDepGroupCode(String depGroupCode);

	List<Map<String, Object>> getDrgStdYear(String asId);

	/**
	 * @methodname    :foreCastHospital
	 * @description   :全院测算
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年5月17日
	 */
	List<Map<String, Object>> foreCastHospital(String dateFrom, String dateTo,
			String asId, String forecastYear, String monitorType);

	/**
	 * @methodname    :foreCastDepgroup
	 * @description   :科室组测算
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年5月17日
	 */
	List<Map<String, Object>> foreCastDepgroup(String dateFrom, String dateTo,
			String asId, String forecastYear, String monitorType);

	/**
	 * @methodname    :foreCastDep
	 * @description   :科室测算
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年5月17日
	 */
	List<Map<String, Object>> foreCastDep(String dateFrom, String dateTo,
			String asId, String forecastYear, String monitorType);

}
